1. Field of the Invention
The invention relates to interleaving a source data stream and deinterleaving an interleaved data stream and to corresponding transmitters and receivers, and is in particular suitable for use with block-based interleavers.
2. Description of the Related Art
It is well known in the art to employ interleavers to obtain some limited form of time diversity, particularly for wireless communications systems which suffer from signal fading effects due to the variance of the radio channel characteristics. An example of a communication system in which transmitters and receivers interleave and deinterleave data, respectively, is depicted in FIG. 1.
In FIG. 1 a transmitter 100, 110, 120, 130 transmits data on a channel 140 to a receiver 150, 160, 170, 180. The transmitter obtains data from signal source 100, and this data then undergoes forward error correction (FEC) which is done by FEC encoder 110, so that convolutional codes or codes derived therefrom are obtained. The output of the FEC encoder 110 is forwarded as source data stream to the interleaver 120.
Interleavers, also known as permuters, are used for minimising the effect of noise bursts and fading in a data transmission system. An interleaver is generally implemented using a block structure or a convolutional structure. Variations of block interleavers are also used in communication systems. Other interleavers include S-Random Interleaver, Dithered-Golden Interleaver, Pseudo-Noise (PN) Interleaver, etc.
A block interleaver formats the encoded data in a rectangular array. Usually, each row of the array constitutes a code word or vector of a length that corresponds to the number of columns. The bits are read out column-wise and transmitted over the channel. At the receiver, the deinterleaver stores the data in the same rectangular array format, but it is read out row-wise, one code word at a time. As a result of this reordering of the data during transmission, a burst of errors is broken down into a number of bursts, which number corresponds to the number of rows in the rectangular array during encoding. Other implementations of block interleavers exist such as those which use only one vector.
A convolutional interleaver can be used in place of a block interleaver in much the same way.
The process of interleaving and the actual interleaver functionality will be better understood considering the following example. Assuming that the source data stream which is submitted to the interleaver is an input sequence xk, the function of the interleaver can be described as permuting the input sequence xk to an output sequence yk according toyk=xf(k),where f(k) is a permutation function that might for instance bef(k)=1+[(7*k)mod 54]with k running from 1 to 54, and where 54 is, in the present example, the length of one code block. Applying this example function, the input sequence would be mapped to an output sequence according to (y1y2 . . . y54)=(x8x15x22x29x36x43x3x10x17 . . . x41x48x1).
The conventional interleaving techniques are especially disadvantageous in communication systems where data of a plurality of different transmitters is simultaneously conveyed on one channel. This is depicted in more detail with reference to FIG. 2.
Referring to the figure, there are three transmitting devices shown that transmit data on the same channel 140. The individual transmitters are of essentially the same construction but transmit data from different signal sources 200, 210, 220. Each of the data from the individual signal sources are first FEC encoded in the respective encoder 110, and are then interleaved by interleaver 230 before being modulated by modulator 130.
The transmission scheme depicted in FIG. 2 is disadvantageous because there is some form of interference between the multiple data streams which negatively affects the system performance. This is since the multiple data streams that share the same radio resource simultaneously, do not fulfil the general requirement of perfect orthogonatility. In particular, the interference can produce burst errors that can render the transmitted data unreadable to the respective receivers.